The present invention relates generally to systems for generating graphics and more particularly to methods and apparatus for rendering images from a multi-path simulation model.
Programmed computers can be used to edit and create movies. For example, a computer program called After Effects available from Adobe Systems Incorporated of Mountain View, Calif., provides its user the ability to edit and create movies by integrating and arranging pieces of footage. In such programs, the process of creating a movie typically occurs in two major stages: modeling and rendering.
Modeling is the process of creating a structure for a movie project, commonly called a composition, by defining the arrangement and timing of imported footage. A composition is essentially a set of instructions that define the processing of footage pieces in space and time in formation of a movie. Each composition includes the definition of one or more layers which are place holders for pieces of footage. Modeling includes the subprocesses of importing footage into layers, editing the footage, arranging or compositing the footage and animating objects or applying other effects to the composition layers.
Imported footage may be of the form of video pictures, animations, drawings, stills, photographs or computer generated images. Each piece of imported footage is assigned to a layer. Compositing integrates the footage of respective layers using geometry masks, transparency information and effects. As the layers of a composition are integrated, animation and other effects can be applied to each layer.
To create a final output, such as a film or video tape for reviewing, the composition must be rendered. The rendering process transforms the footage instructions associated with each layer into fixed video frames. During the rendering process, corresponding pixels from each layer are composited on top of each other to create a final image, a frame at a time, in the output format requested by the user. The frames may then be written for either analog or digital storage to a recording device, such as a video tape recorder, photograph film recorder or digital disk recorder. In this way, a movie is produced.
Animation, as described above, is a subprocess of the modeling stage. Animation techniques allow a user to create apparently spontaneous lifelike movement of objects in the composition. Most movie systems allow a user to animate an object (i.e., a layer) by specifying a path of the object as it moves in a two or three dimensional space. The path is typically represented by a curve Q. Motion along this curve Q can be described by a single function (e.g., u as a function of time where u is the natural parameter of the function defining Q).
Often the process of creating a composition requires many iterations of the various modeling steps before a final product is produced. Simulation techniques may be used to model the behavior or action that is performed in a composition and speed the progression toward a final product. A traditional simulation model includes a linear progression of acting agents that operate on state information to produce an output or resultant state, where successive acting agents operate on the output produced by an acting agent just previous in time. The acting agents typically define functions that perform one or more operations on the data.
Referring now to FIG. 1, a traditional simulation model 50 includes a series of actions that are applied over a window of time. Individual frames may be rendered at specific time intervals to create the frames which are to be used in generating a movie output. Typically the process is a serial process and incremental changes to the simulation state output are applied as each action is executed at a given time interval. More specifically, the traditional simulation model follows a track 50 comprised of a plurality of actions 60. An action 60 is a process that operates on a simulation state database or SOUP 65. At any given time interval, the simulation state database is a particular set of defined attributes and values that is indicative of the simulation state. The simulation state database is typically a collection of dots where each dot is a collection of attribute pairs. For example, the simulation state database may contain hundreds of dots where each dot may contain a horizontal position attribute and its corresponding value, a vertical position attribute and its corresponding value as well as a color (red attribute and a value, green attribute and a value, and blue attribute and a value).
As described above, an action 60 is the process that operates on the simulation state database (i.e., the SOUP is both an input and an output). The action can add dots, remove dots, or modify one or more attributes or one or more values in the simulation state database. An action 60 can include one or more acting agents (not shown). An acting agent is a process that effects the simulation. Examples of actions or acting agents are gravity and wind. In traditional simulation modeling, all acting agents leave a permanent result. That is, when applied to the simulation state database, they leave an effect which is passed to the next action at a next time interval in the track.
However, it is often desirable, especially for animation systems, to create temporary results. In other words, typical simulation techniques do not allow the possibility to create intermediate events within a flow of actions such that the intermediate events have a defined lifetime existence separate from the overall flow of events.
In general, in one aspect, the invention features a method of integrating two independent simulations and includes running a first simulation simulating changes in an object over time. The first simulation includes a first simulation output reflective of a state of the first simulation at one or more predefined times. A second simulation is run concurrently simulating changes in a second object over time. An interaction between the first and second simulations is defined resulting in an integrated simulation output without affecting the first simulation state.
Aspects of the invention include numerous features. The second simulation can provide a second simulation output reflective of a state of the second simulation at one or more predefined times. The step of defining the interaction results in the integrated simulation output without affecting the second simulation state. The integrated simulation output combines the second simulation output and a modified first simulation output where the modified first simulation output is produced by the operation of the second simulation on the first simulation output.
The method further includes running a third simulation concurrently simulating changes in a third object over time and defining an interaction between the first, second and third simulations resulting in a second integrated simulation output without affecting the first or the second simulation state. The third simulation provides a third simulation output reflective of a state of the third simulation at one or more predefined times. The second integrated simulation output combines the third simulation output and a modified first integrated simulation output where the modified first integration simulation output is produced by the operation of the third simulation on the integrated simulation output.
Each of the first and second simulations simulate the animation of a layer in a multi-layer composition. The second simulation animates a property of the object associated with the first simulation.
In another aspect, the invention provides a method of integrating independent simulations including defining a first and second simulation. Each simulation runs concurrently and includes a plurality of actions defining the progression of a simulation over time and a simulation output reflective of a state of a simulation at prescribed times during the simulation. An interaction between the first and second simulations is defined including a direction of influence where the direction of influence defines how the simulation output from the first simulation is combined with the simulation output from the second simulation at each time in the second simulation.
Aspects of the invention include numerous features. The step of defining an interaction includes providing the simulation output from the first simulation as an input to the second simulation, operating on the first simulation output in the second simulation to produce a modified first simulation output and combining the modified first simulation output and the simulation output of the second simulation to produce a integrated simulation output.
The integrated simulation output can be rendered to produce a frame of data for display. The integrated simulation output for a given time is provided to a next action in the second simulation. Only the simulation output from the second simulation at a given time can be provided to a next action in the second simulation.
In another aspect, the invention provides a method of integrating independent simulations to produce a multi-level simulation including defining a first and second simulation where each simulation runs concurrently and includes a plurality of actions defining the progression of a simulation over time and a simulation output reflective of a state of a simulation at prescribed times during the simulation. An interaction between the first and second simulations is defined. The simulation output from the first simulation is provided as an input to the second simulation. The first simulation output in the second simulation is operated on to produce a modified first simulation output. The modified first simulation output and the simulation output of the second simulation are combined to produce a integrated simulation output. The integrated simulation output is rendered to produce a frame of data for display.
In another aspect, the invention provides a method of integrating two independent simulations and includes providing a first and second layer where each layer specifies separate but concurrent simulations and includes a plurality of actions defining the progression of a simulation over time. Each action includes a layer state input, a function, and a resultant layer state output where the application of the function to the layer state input results in the resultant layer state output. An interaction between the first and second simulations is defined. The interaction includes providing as an input to the second layer the first layer""s resultant state output, operating on the first layer""s resultant state output by actions specified in the second layer to produce a modified resultant state output for the first layer and combining the resultant state output for the second layer with the modified resultant state output from the first layer to produce an integrated simulation state output. The integrated simulation state output is rendered producing a frame for display.
Aspects of the invention include numerous features. The combining step copies the resultant state output without affecting output produced by the second layer. Either of the resultant state outputs for the first or second layer can be rendered to reflect the state of either simulation at a given time. Rendering includes displaying an image representative of an interaction of the first and second layers at a particular time.
In another aspect, the invention provides a simulation tool for providing multi-level simulations of concurrently running simulations and includes a simulation engine operable to designate a first and second simulation each including a simulation output, to copy a simulation output from a first simulation and provide the copy of the first simulation output to the second simulation resulting in application of actions specified in the second simulation at a same time interval to the first simulation output thereby producing a modified first simulation output, and to combine the modified first simulation output and a second simulation output for a predefined time producing an integrated simulation output. A render designation tool is included for designating one or more times for rendering the integrated simulation output to produce a frame for display representative of the interaction of the first and second simulations.
In another aspect, the invention provides a method for animating an object that includes selecting a property of the object to animate, animating the property over a time interval including updating a value of the property and defining and animating an ephemeral property of the object over the time interval where the value of the ephemeral property is determined from the value of the property at a same time and an associated function. A first simulation is run simulating an animation of the property producing a first simulation output reflective of a state of the first simulation at predefined times. A second simulation is run concurrently simulating an animation of the ephemeral property producing a second simulation output reflective of a state of the second simulation at the predefined times without affecting the state of the first simulation. A frame of data is rendered at the predefined times during the time interval using the second simulation output whereby the ephemeral property is animated for each individual frame without affecting underlying values of the property produced by the first animation.
Advantages of the present invention include one or more of the following. The invention provides more control than provided by traditional simulation environments. The invention provides an added element of xe2x80x9cnon-destructivenessxe2x80x9d to the simulation environment, which allows references from one point in a simulation to any point previous in execution time or real simulation time. Other advantages and features will be apparent from the following description and from the claims.